/**
 * 属性修饰工具类型：
 * 这一部分的工具类型主要与使用 属性修饰、映射类型 与 索引类型 相关
*/
/**
 * 在内置工具类型中，访问性修饰工具类型 包括以下三位：
 * Partial （?、+?），即标记属性为可选
 * Required（-?） 必须
 * Readonly 只读
 * 
 * 需要注意的是，可选标记不等于修改此属性类型
*/
type Partial<T> = {
    [P in keyof T]?: T[P];
};

type Required<T> = {
    [P in keyof T]-?: T[P];
};

type Readonly<T> = {
    readonly [P in keyof T]: T[P];
};

//使用 Partial可选 与 不使用 Partial可选，进行对比：
interface Foo {
    optional: string | undefined;
    name: string;
}
const foo1: Partial<Foo> = {
    name: '1',
};
const foo2: Foo = {
    name: '1',
};




//export {}：解决“无法重新声明块范围变量”错误提示问题
export { }